// ==UserScript==
// @name         微信公众号 BIZ 提取工具
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  在微信公众号页面添加一个按钮，点击后提取并解码 biz 参数
// @author       You
// @match        https://mp.weixin.qq.com/*
// @grant        GM_setClipboard
// @grant        GM_addStyle
// ==/UserScript==

(function() {
    'use strict';

    // 添加 Apple Design 风格的 CSS
    GM_addStyle(`
        .apple-button {
            position: fixed;
            top: 20px;
            right: 20px;
            background-color: rgba(0, 122, 255, 0.9);
            color: white;
            border: none;
            border-radius: 20px;
            padding: 8px 16px;
            font-size: 14px;
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
            cursor: pointer;
            transition: all 0.2s ease;
            z-index: 9999;
        }
        
        .apple-button:hover {
            background-color: rgba(0, 122, 255, 1);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
        }
        
        .apple-button:active {
            transform: scale(0.97);
        }
        
        .result-modal {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background-color: rgba(255, 255, 255, 0.95);
            border-radius: 12px;
            padding: 20px 30px;
            box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
            z-index: 10000;
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
            text-align: center;
            min-width: 300px;
            backdrop-filter: blur(10px);
            border: 1px solid rgba(0, 0, 0, 0.1);
        }
        
        .result-title {
            font-size: 18px;
            font-weight: 500;
            margin-bottom: 15px;
            color: #333;
        }
        
        .result-value {
            font-size: 24px;
            font-weight: 600;
            color: #007AFF;
            margin-bottom: 15px;
            word-break: break-all;
        }
        
        .result-message {
            font-size: 14px;
            color: #666;
            margin-bottom: 20px;
        }
        
        .close-button {
            background-color: #F2F2F7;
            color: #007AFF;
            border: none;
            border-radius: 18px;
            padding: 8px 20px;
            font-size: 14px;
            font-weight: 500;
            cursor: pointer;
            transition: all 0.2s ease;
        }
        
        .close-button:hover {
            background-color: #E5E5EA;
        }
        
        .close-button:active {
            transform: scale(0.97);
        }
    `);

    // 创建按钮
    const button = document.createElement('button');
    button.className = 'apple-button';
    button.textContent = '提取 BIZ';
    document.body.appendChild(button);

    // 按钮点击事件
    button.addEventListener('click', function() {
        try {
            // 使用 unsafeWindow 直接访问页面变量，避免 CSP 限制
            if (typeof unsafeWindow.biz !== 'undefined') {
                const result = atob(unsafeWindow.biz);
                console.log('执行 atob(biz) 结果:', result);
                
                // 复制到剪贴板
                GM_setClipboard(result, 'text');
                
                // 显示结果
                showResult(result, '已复制到剪贴板');
            } else {
                // 尝试从 URL 中提取
                const url = window.location.href;
                const bizMatch = url.match(/biz=([^&]+)/);
                
                if (bizMatch && bizMatch[1]) {
                    const biz = bizMatch[1];
                    const result = atob(biz);
                    console.log('从 URL 提取的 biz 解码结果:', result);
                    
                    // 复制到剪贴板
                    GM_setClipboard(result, 'text');
                    
                    // 显示结果
                    showResult(result, '已从 URL 提取并复制到剪贴板');
                } else {
                    showResult('获取失败', '无法获取 biz 变量，请在控制台手动执行 atob(biz)');
                }
            }
        } catch (e) {
            console.error('执行失败:', e);
            showResult('执行失败', e.message);
        }
    });

    // 显示结果的函数
    function showResult(value, message) {
        // 移除已有的结果框
        const existingModal = document.querySelector('.result-modal');
        if (existingModal) {
            existingModal.remove();
        }
        
        // 创建结果框
        const modal = document.createElement('div');
        modal.className = 'result-modal';
        
        modal.innerHTML = `
            <div class="result-title">BIZ 解码结果</div>
            <div class="result-value">${value}</div>
            <div class="result-message">${message}</div>
            <button class="close-button">关闭</button>
        `;
        
        document.body.appendChild(modal);
        
        // 关闭按钮事件
        const closeButton = modal.querySelector('.close-button');
        closeButton.addEventListener('click', function() {
            modal.remove();
        });
        
        // 点击其他区域关闭
        document.addEventListener('click', function closeModal(e) {
            if (!modal.contains(e.target) && e.target !== button) {
                modal.remove();
                document.removeEventListener('click', closeModal);
            }
        });
    }
})();